home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Information / CSMP Digest / volume 1 / csmp-v1-149.txt < prev    next >
Text File  |  1992-12-31  |  51KB  |  1,240 lines

  1. C.S.M.P. Digest             Sun, 02 Aug 92       Volume 1 : Issue 149
  2.  
  3. Today's Topics:
  4.  
  5.     MPW:  Tool to "execute" Finder Aliases
  6.     32-bit compatibility
  7.     The "New" Sound Manager (Was: Audio CD File Format)
  8.     Why can't my unix box compile my Mac source?
  9.     OCE Finder and Macintosh PC Exchange
  10.     Drawing a "graph" of a sound
  11.  
  12.  
  13.  
  14. The Comp.Sys.Mac.Programmer Digest is moderated by Michael A. Kelly.
  15.  
  16. The digest is a collection of article threads from the internet newsgroup
  17. comp.sys.mac.programmer.  It is designed for people who read c.s.m.p. semi-
  18. regularly and want an archive of the discussions.  If you don't know what a
  19. newsgroup is, you probably don't have access to it.  Ask your systems
  20. administrator(s) for details.  (This means you can't post questions to the
  21. digest.)
  22.  
  23. Each issue of the digest contains one or more sets of articles (called
  24. threads), with each set corresponding to a 'discussion' of a particular
  25. subject.  The articles are not edited; all articles included in this digest
  26. are in their original posted form (as received by our news server at
  27. cs.uoregon.edu).  Article threads are not added to the digest until the last
  28. article added to the thread is at least one month old (this is to ensure that
  29. the thread is dead before adding it to the digest).  Article threads that
  30. consist of only one message are generally not included in the digest.
  31.  
  32. The entire digest is available for anonymous ftp from ftp.cs.uoregon.edu
  33. [128.223.8.8] in the directory /pub/mac/csmp-digest.  The most recent issues
  34. are available from sumex-aim.stanford.edu [36.44.0.6] in the directory
  35. /info-mac/digest/csmp.  If you don't have ftp capability, the sumex archive
  36. has a mail server; send a message with the text '$MACarch help' (no quotes)
  37. to LISTSERV@ricevm1.rice.edu for more information.
  38.  
  39. The digest is also available via email.  Just send a note saying that you
  40. want to be on the digest mailing list to mkelly@cs.uoregon.edu, and you will
  41. automatically receive each new issue as it is created.  Sorry, back issues
  42. are not available through the mailing list.
  43.  
  44. Send administrative mail to mkelly@cs.uoregon.edu.
  45.  
  46.  
  47. -------------------------------------------------------
  48.  
  49. From: cluther@morticia.cnns.unt.edu (Clay Luther)
  50. Subject: MPW:  Tool to "execute" Finder Aliases
  51. Date: 18 Jun 92 23:04:24 GMT
  52. Organization: University of North Texas
  53.  
  54. I currently have a problem (caused by TOPS) that I need to work around.
  55.  
  56. We use TOPS to connect to our Unix boxes where we store common code between
  57. our Mac and Unix programs.  Our MPW environment is setup to expect certain
  58. Unix volumes to be mounted when MPW kicks off (these are normally mounted
  59. at start-up).
  60.  
  61. However, the natures of my job require me to have FileSharing running on my
  62. machine as well.  If I automatically mount TOPS volumes at start-up, File
  63. Sharing will not come up.
  64.  
  65. I was trying to figure some way for MPW to automatically mount the TOPS
  66. volumes through a Finder alias file (I have the aliases to the servers in my
  67. Apple Menu) - that is, I'd like to coax MPW to "execute" the Finder aliases
  68. for these servers.
  69.  
  70. I expect a tool that issues an ODOC event to the Finder might just do the trick.
  71.  
  72. Has anyone written something that could help me?
  73.  
  74. Thanks.
  75.  
  76. - -- 
  77. Clay W. Luther                  cluther@morticia.cnns.unt.edu
  78. Macintosh/Unix Programmer for Vortech Data, Inc.
  79. Virtual System Consultant for the UNT Center for Network Neuroscience
  80. (214) 994-1377
  81.  
  82. +++++++++++++++++++++++++++
  83.  
  84. From: lsr@taligent.com (Larry Rosenstein)
  85. Date: 19 Jun 92 20:19:59 GMT
  86. Organization: Taligent, Inc.
  87.  
  88. In article <cluther.708908664@morticia>, cluther@morticia.cnns.unt.edu
  89. (Clay Luther) wrote:
  90. > I was trying to figure some way for MPW to automatically mount the TOPS
  91. > volumes through a Finder alias file (I have the aliases to the servers in my
  92. > Apple Menu) - that is, I'd like to coax MPW to "execute" the Finder aliases
  93.  
  94. I wrote an MPW tool that resolves an alias file and outputs the resulting
  95. pathname.  I find it very useful for writing scripts that need to access
  96. remote servers, etc.
  97.  
  98. You can find it along with a couple of other System 7-related MPW tools and
  99. the Pascal sources on ftp.apple.com in /pub/lsr.
  100.  
  101. Larry Rosenstein
  102. Taligent, Inc.
  103.  
  104. lsr@taligent.com
  105.  
  106. +++++++++++++++++++++++++++
  107.  
  108. From: tom@dtint.uucp (Thomas R. Kimpton)
  109. Date: 22 Jun 92 15:56:05 GMT
  110. Organization: Digital Technology, International
  111.  
  112. In article <cluther.708908664@morticia> cluther@morticia.cnns.unt.edu (Clay Luther) writes:
  113. >I currently have a problem (caused by TOPS) that I need to work around.
  114. >
  115. >We use TOPS to connect to our Unix boxes where we store common code between
  116. >our Mac and Unix programs.  Our MPW environment is setup to expect certain
  117. >Unix volumes to be mounted when MPW kicks off (these are normally mounted
  118. >at start-up).
  119. >
  120. >However, the natures of my job require me to have FileSharing running on my
  121. >machine as well.  If I automatically mount TOPS volumes at start-up, File
  122. >Sharing will not come up.
  123. >
  124. >I was trying to figure some way for MPW to automatically mount the TOPS
  125. >volumes through a Finder alias file (I have the aliases to the servers in my
  126. >Apple Menu) - that is, I'd like to coax MPW to "execute" the Finder aliases
  127. >for these servers.
  128. >
  129. >I expect a tool that issues an ODOC event to the Finder might just do the trick.
  130. >
  131. >Has anyone written something that could help me?
  132. >
  133. >Thanks.
  134. >
  135. >-- 
  136. >Clay W. Luther                  cluther@morticia.cnns.unt.edu
  137. >Macintosh/Unix Programmer for Vortech Data, Inc.
  138. >Virtual System Consultant for the UNT Center for Network Neuroscience
  139. >(214) 994-1377
  140.  
  141. You don't really need anything new, MPW has a 'choose' tool that
  142. will allow you to mount volumes.  Here are some key bindings I use
  143. to mount files, you could just put the 'choose' code in your startup
  144. and it will automatically mount the partition/disk:
  145.  
  146.     setkey    command-shift-option-control-F1
  147.         '"{sysfolder}Apple Menu Items:chooser"' 
  148.     setkey    command-shift-option-control-F2
  149.         'choose -u Dev "R&D Ethertalk":SunServer:DD45' 
  150.     setkey    command-shift-option-control-F3
  151.         'choose -u Dev "R&D Ethertalk":SunServer:RandD' 
  152.  
  153. (NOTE: there are only three lines above, they've been broken in two
  154. so they don't wrap uglily :-).  Do a help on 'setkey' and 'choose'
  155. to find out the correct syntax, you can specify passwords with
  156. choose.
  157.  
  158. - -- 
  159. - ---
  160. Tom Kimpton                            tom@dtint.dtint.com
  161. Digital Technology Int.                (801)226-2984    
  162. 500 W. 1200 South, Orem UT, 84057      FAX (801) 226-8438
  163.  
  164. ---------------------------
  165.  
  166. From: cramer@unixland.natick.ma.us (Bill Cramer)
  167. Subject: 32-bit compatibility
  168. Organization: Unixland Public Access Unix  (508) 655-3848
  169. Date: Sun, 21 Jun 1992 02:31:48 GMT
  170.  
  171. (woops, this ended up in the wrong group last time...)
  172.  
  173. A simple question -- how do I establish whether or not a program
  174. is 32-bit compatible?  I have a written a program with Think C, 
  175. and it runs without any (apparent) problems on a Mac II (Sys 7, 8Mb
  176. memory, with MODE32 installed).  Does this mean that the program is
  177. 32-bit compatible?
  178.  
  179. Bill Cramer
  180.  
  181. 251 West Central Street, Suite 142    | "You can buy better, 
  182. Natick, MA 01760 USA            |    but you just can't pay more."
  183. Internet: cramer@unixland.natick.ma.us    |        
  184. CIS: 70322,3412                | 
  185.  
  186.  
  187.  
  188. +++++++++++++++++++++++++++
  189.  
  190. From: John Lacey <johnl@spinner.cs.indiana.edu>
  191. Organization: Computer Science, Indiana University
  192. Date: Sun, 21 Jun 1992 00:30:24 -0500
  193.  
  194. cramer@unixland.natick.ma.us (Bill Cramer) writes:
  195.  
  196. >[The program] runs without any (apparent) problems on a Mac II (Sys 7,
  197. >8Mb memory, with MODE32 installed).  Does this mean that the program is
  198. >32-bit compatible?
  199.  
  200. Yes, and it's also completely free of bugs and has a well-designed
  201. human interface.  (Sorry, but I couldn't resist.)  :-}
  202.  
  203. >How do I establish whether or not a program is 32-bit compatible?  
  204.  
  205. The main features of 32-bit clean are:
  206. 1) Never set the bits in a pointer or handle explicitly.
  207. 2) Never compare more bits than contain a valid address.
  208.  
  209. These are spelled out in more detail in Inside Mac VI, a Tech Note on
  210. StripBits, and at least one more tech note whose topic and title
  211. escape me at the moment.
  212.  
  213. This covers everything from always using system calls to create and
  214. modify pointers and handles (NewHandle, HLock, HGetState, &c) to
  215. calling StripBits before comparing two addresses in 24-bit mode.
  216. - -- 
  217. John Lacey        Whatever you can do, or dream you can, begin it;
  218.                   Boldness has genius, power, and magic in it.      --- G"othe
  219.  
  220. +++++++++++++++++++++++++++
  221.  
  222. From: Bruce.Hoult@bbs.actrix.gen.nz
  223. Organization: Actrix Information Exchange
  224. Date: Sun, 21 Jun 1992 04:48:46 GMT
  225.  
  226. In article <1992Jun21.023148.22971@unixland.natick.ma.us> cramer@unixland.natick.ma.us (Bill Cramer) writes:
  227. > A simple question -- how do I establish whether or not a program
  228. > is 32-bit compatible?  I have a written a program with Think C, 
  229. > and it runs without any (apparent) problems on a Mac II (Sys 7, 8Mb
  230. > memory, with MODE32 installed).  Does this mean that the program is
  231. > 32-bit compatible?
  232.  
  233. All normal  programs are automatically 32-bit compatible unless you actively
  234. do something to stop them being so, such as attempting to lock a
  235. handle yourself instead of using the ROM routines.
  236.  
  237. The empirical method of "try it and see" should work reasonably
  238. reliably, but not on a machine with only 8 MB of RAM.  Try it on a
  239. machine with more than 8 MB RAM (and preferebly more than 16 MB) and
  240. drop into Macsbug and check that the program actually got loading into
  241. high memory.
  242.  
  243. - -- 
  244. Bruce.Hoult@bbs.actrix.gen.nz   Twisted pair: +64 4 477 2116
  245. BIX: brucehoult                 Last Resort:  PO Box 4145 Wellington, NZ
  246. "Cray's producing a 200 MIPS personal computer with 64MB RAM and a 1 GB
  247. hard disk that fits in your pocket!"   "Great!  Is it PC compatable?"
  248.  
  249. +++++++++++++++++++++++++++
  250.  
  251. From: Bathsheba.Grossman@bbs.oit.unc.edu (Bathsheba Grossman)
  252. Organization: Extended Bulletin Board Service
  253. Date: Mon, 22 Jun 1992 04:02:06 GMT
  254.  
  255. In article <1992Jun21.003030.22131@news.cs.indiana.edu> John Lacey <johnl@spinner.cs.indiana.edu> writes:
  256. >cramer@unixland.natick.ma.us (Bill Cramer) writes:
  257. >>How do I establish whether or not a program is 32-bit compatible?  
  258. >
  259. >The main features of 32-bit clean are:
  260. >1) Never set the bits in a pointer or handle explicitly.
  261. >2) Never compare more bits than contain a valid address.
  262. >
  263. >These are spelled out in more detail in Inside Mac VI, a Tech Note on
  264. >StripBits, and at least one more tech note whose topic and title
  265. >escape me at the moment.
  266.  
  267. (Actually I think this trap is called StripAddress.)  Also, if you
  268. have any CDEF's you have to adjust them as per IM VI 28-12, because of
  269. the calcCRgns message, which uses the top byte of a handle in a most evil
  270. fashion.  This is also documented in TN#196, CDEF Parameters.
  271.  
  272. - -Sheba
  273. sheba@mohlsun.physics.upenn.edu
  274. - --
  275.    The opinions expressed are not necessarily those of the University of
  276.      North Carolina at Chapel Hill, the Campus Office for Information
  277.         Technology, or the Experimental Bulletin Board Service.
  278.            internet:  bbs.oit.unc.edu or 152.2.22.80
  279.  
  280. +++++++++++++++++++++++++++
  281.  
  282. From: zobkiw@world.std.com (Joe Zobkiw)
  283. Organization: The World Public Access UNIX, Brookline, MA
  284. Date: Mon, 22 Jun 1992 12:51:39 GMT
  285.  
  286. To make sure your app i 32-bit clean, read the Compatibility Chapter in
  287. IM-VI about it and make sure you are followingthe rules listed there:
  288.  
  289. ie: Call HLock and HUnlock as opposed to manipulating bits directly. etc.
  290.  
  291.  
  292. - -- 
  293. - -- joe zobkiw                      Internet: zobkiw@world.std.com
  294. - --                                      AOL: AFL Zobkiw  
  295. - -- mac.synthesis.MIDI.THINK C.OOP
  296. - -- asm.comm.networks.cool tunes...
  297.  
  298. ---------------------------
  299.  
  300. From: hpoppe@ncar.ucar.edu (Herb Poppe)
  301. Subject: The "New" Sound Manager (Was: Audio CD File Format)
  302. Organization: Scientific Computing Division/NCAR Boulder, CO
  303. Date: Thu, 28 May 1992 17:10:24 GMT
  304.  
  305. In article <35407@unix.SRI.COM> mxmora@unix.SRI.COM (Matt Mora) writes:
  306.  
  307. > Whenever the new sound manager is finished, ...
  308.  
  309. Matt's statement inspires the following comment:
  310.  
  311. The Sound Manager (SM) has always been "The New Sound Manager". The very 
  312. first SM was "new" because it replaced (NOT) the Sound Driver. The next SM 
  313. was "new" because it replaced the first SM. There have been several "new" 
  314. SMs since then. With all these "new" SMs, the adjective "new" has lost all 
  315. meaning. Do these SMs have version numbers that we can talk about? What is 
  316. the version number of the new SM? Is that something I can find out from 
  317. Gestalt?
  318.  
  319. Have I missed the point? Or is it really a Manager for New Sounds?   :-)
  320.  
  321. Herb Poppe                 National Center for Atmospheric Research (NCAR)
  322. hpoppe@ncar.ucar.edu       1850 Table Mesa Dr.
  323. (303) 497-1296             Boulder, CO  80303
  324.  
  325. +++++++++++++++++++++++++++
  326.  
  327. From: REEKES@applelink.apple.com (Jim Reekes)
  328. Date: 29 May 92 00:08:07 GMT
  329. Organization: Apple Computer, Inc.
  330.  
  331. In article <1992May28.171024.3902@ncar.ucar.edu>, hpoppe@ncar.ucar.edu (Herb Poppe) writes:
  332. > In article <35407@unix.SRI.COM> mxmora@unix.SRI.COM (Matt Mora) writes:
  333. > > Whenever the new sound manager is finished, ...
  334. > Matt's statement inspires the following comment:
  335. > The Sound Manager (SM) has always been "The New Sound Manager". The very 
  336. > first SM was "new" because it replaced (NOT) the Sound Driver. The next SM 
  337. > was "new" because it replaced the first SM. There have been several "new" 
  338. > SMs since then. With all these "new" SMs, the adjective "new" has lost all 
  339. > meaning. Do these SMs have version numbers that we can talk about? What is 
  340. > the version number of the new SM? Is that something I can find out from 
  341. > Gestalt?
  342.  
  343. We called the Sound Manager that shipped in 6.0.7 and finally with System
  344. 7.0 the "New Sound Manager."  All previous versions were called simply
  345. the "Sound Manager."
  346.  
  347. The trap SndSoundManagerVersion first appeared in the "new" version,
  348. originally shipping with System 6.0.7.  This trap is not present on any
  349. previous version of the System.
  350.  
  351. The "new" version (which impliments the SndSoundManagerVersion trap) retuns
  352. a version of 0x02008000.  (Hmm, I think there was a mistake in the build
  353. process and it returned a non-final version number for System 6.0.7)
  354. This is the standard NumVersion structure from the 'vers' resource
  355. defined in the File System interfaces.  Good place for it, huh?
  356.  
  357. So the "new" version of the Sound Manager, which is the first version
  358. that ever had a "version", that shipped in System 6.0.7 is version 2.0.
  359. The version in System 7.0 was 2.0.1.
  360.  
  361. There's another thing called the versionCmd, which can be sent to any
  362. snth with the SndControl trap.  This returns the version of the 'snth'
  363. your using in that channel.
  364.  
  365. OK?
  366.  
  367.  
  368.  
  369. - -----------------------------------------------------------------------
  370. Jim Reekes, Polterzeitgeist  |     Macintosh Toolbox Engineering
  371.                              |          Sound Manager Expert
  372. Apple Computer, Inc.         | "All opinions expressed are mine, and do
  373. 20525 Mariani Ave. MS: 81-KS |   not necessarily represent those of my
  374. Cupertino, CA 95014          |       employer, Apple Computer Inc."
  375.  
  376. +++++++++++++++++++++++++++
  377.  
  378. From: hpoppe@ncar.ucar.edu (Herb Poppe)
  379. Organization: Scientific Computing Division/NCAR Boulder, CO
  380. Date: Fri, 29 May 1992 15:26:56 GMT
  381.  
  382. In article <35407@unix.SRI.COM> mxmora@unix.SRI.COM (Matt Mora) writes:
  383.  
  384. > Whenever the new sound manager is finished, ...
  385.  
  386. In article <1992May28.171024.3902@ncar.ucar.edu>, hpoppe@ncar.ucar.edu 
  387. (Herb Poppe) writes:
  388.  
  389. > Matt's statement inspires the following comment:
  390. > The Sound Manager (SM) has always been "The New Sound Manager".
  391. > ...
  392. > What is the version number of the new SM?
  393.  
  394. In article <25892@goofy.Apple.COM> REEKES@applelink.apple.com (Jim Reekes) 
  395. writes:
  396.  
  397. > We called the Sound Manager that shipped in 6.0.7 and finally with System
  398. > 7.0 the "New Sound Manager."  All previous versions were called simply
  399. > the "Sound Manager."
  400. > ...
  401. > So the "new" version of the Sound Manager, which is the first version
  402. > that ever had a "version", that shipped in System 6.0.7 is version 2.0.
  403. > The version in System 7.0 was 2.0.1.
  404.  
  405. Ah, but the "new" Sound Manager that Matt and I are speaking of is the New 
  406. Sound Manager that was discussed at the WWDC!   :-)
  407.  
  408. Herb Poppe                 National Center for Atmospheric Research (NCAR)
  409. hpoppe@ncar.ucar.edu       1850 Table Mesa Dr.
  410. (303) 497-1296             Boulder, CO  80303
  411.  
  412. +++++++++++++++++++++++++++
  413.  
  414. From: cb@fantod.xis.xerox.com (Christopher Bader)
  415. Organization: Xerox Imaging Systems, Inc.
  416. Date: Wed, 10 Jun 1992 21:27:12 GMT
  417.  
  418. >We called the Sound Manager that shipped in 6.0.7 and finally with System
  419. >7.0 the "New Sound Manager."  All previous versions were called simply
  420. >the "Sound Manager."
  421. >
  422. >The trap SndSoundManagerVersion first appeared in the "new" version,
  423. >originally shipping with System 6.0.7.  This trap is not present on any
  424. >previous version of the System.
  425. >
  426. >The "new" version (which impliments the SndSoundManagerVersion trap) retuns
  427. >a version of 0x02008000.  (Hmm, I think there was a mistake in the build
  428. >process and it returned a non-final version number for System 6.0.7)
  429. >This is the standard NumVersion structure from the 'vers' resource
  430. >defined in the File System interfaces.  Good place for it, huh?
  431. >
  432. >So the "new" version of the Sound Manager, which is the first version
  433. >that ever had a "version", that shipped in System 6.0.7 is version 2.0.
  434. >The version in System 7.0 was 2.0.1.
  435. >
  436.  
  437. Does this mean that the Sound Manager described in IM VI is present in full in 6.0.7?
  438.  
  439.  
  440.  
  441. +++++++++++++++++++++++++++
  442.  
  443. From: REEKES@applelink.apple.com (Jim Reekes)
  444. Date: 22 Jun 92 00:18:22 GMT
  445. Organization: Apple Computer, Inc.
  446.  
  447. In article <1992Jun10.212712.12198@spectrum.xerox.com>, cb@fantod.xis.xerox.com (Christopher Bader) writes:
  448. > >We called the Sound Manager that shipped in 6.0.7 and finally with System
  449. > >7.0 the "New Sound Manager."  All previous versions were called simply
  450. > >the "Sound Manager."
  451. > >
  452. > >The trap SndSoundManagerVersion first appeared in the "new" version,
  453. > >originally shipping with System 6.0.7.  This trap is not present on any
  454. > >previous version of the System.
  455. > >
  456. > >The "new" version (which impliments the SndSoundManagerVersion trap) retuns
  457. > >a version of 0x02008000.  (Hmm, I think there was a mistake in the build
  458. > >process and it returned a non-final version number for System 6.0.7)
  459. > >This is the standard NumVersion structure from the 'vers' resource
  460. > >defined in the File System interfaces.  Good place for it, huh?
  461. > >
  462. > >So the "new" version of the Sound Manager, which is the first version
  463. > >that ever had a "version", that shipped in System 6.0.7 is version 2.0.
  464. > >The version in System 7.0 was 2.0.1.
  465. > >
  466. > Does this mean that the Sound Manager described in IM VI is present in
  467. > full in 6.0.7?
  468.  
  469.  
  470.  
  471. Yes, but it's basically a "beta" version of the 7.0 Sound Manager.
  472.  
  473. - -----------------------------------------------------------------------
  474. Jim Reekes, Polterzeitgeist  |     Macintosh Toolbox Engineering
  475.                              |          Sound Manager Expert
  476. Apple Computer, Inc.         | "All opinions expressed are mine, and do
  477. 20525 Mariani Ave. MS: 81-KS |   not necessarily represent those of my
  478. Cupertino, CA 95014          |       employer, Apple Computer Inc."
  479.  
  480.  
  481. ---------------------------
  482.  
  483. From: mxmora@unix.SRI.COM (Matt Mora)
  484. Subject: Why can't my unix box compile my Mac source?
  485. Date: 2 Jun 92 21:12:16 GMT
  486. Organization: SRI International, Menlo Park, California
  487.  
  488. With all this talk about toolserver and the like, how
  489. come no one has come up with a way for me to tell the unix
  490. box to compile some source and let the mac link its output?
  491.  
  492. You you figure that with all these net.guru's bragging about
  493. how much better the compilers are for their unix machines
  494. that they would figure out a way to use tool server or an MPW
  495. tool let the unix box compile their source while they do something
  496. on their mac. Wouldn't this be a great idea? I think Steve Dorner
  497. does something like this but he might compile on his mac. But
  498. he uses emacs and the source code system on his unix box.
  499.  
  500. Is something like this possible?
  501.  
  502. Just curious. If it was, I sure would run out and get me an eithernet
  503. card and seriously consider using MPW. :-)
  504.  
  505. Matt
  506.  
  507.  
  508. - -- 
  509. ___________________________________________________________
  510. Matthew Mora                |   my Mac  Matt_Mora@sri.com
  511. SRI International           |  my unix  mxmora@unix.sri.com
  512. ___________________________________________________________
  513.  
  514. +++++++++++++++++++++++++++
  515.  
  516. From: dorner@pequod.cso.uiuc.edu (Steve Dorner)
  517. Organization: University of Illinois at Urbana-Champaign
  518. Date: Wed, 3 Jun 1992 15:09:42 GMT
  519.  
  520. mxmora@unix.SRI.COM (Matt Mora) writes:
  521. >With all this talk about toolserver and the like, how
  522. >come no one has come up with a way for me to tell the unix
  523. >box to compile some source and let the mac link its output?
  524.  
  525. Because it's a lot of work, requiring detailed knowledge of things
  526. most of us really would rather not think about.
  527.  
  528. >that they would figure out a way to use tool server or an MPW
  529. >tool let the unix box compile their source while they do something
  530. >on their mac. Wouldn't this be a great idea?
  531.  
  532. Yes.
  533.  
  534. >I think Steve Dorner
  535. >does something like this but he might compile on his mac.
  536.  
  537. Right.
  538.  
  539. >he uses emacs and the source code system on his unix box.
  540.  
  541. Not emacs.  Otherwise, yes.
  542.  
  543. >Is something like this possible?
  544.  
  545. Of course.  Sumacc worked this way, ages ago.  It probably isn't even too
  546. hard, given gcc.  However, there are a lot of really arcane things to worry
  547. about, like pascal calling conventions.  I suspect that most of this work
  548. is already done, in the Apple port of gcc for MPW 2.  However, there are still
  549. drawbacks; Apple's gcc port, for example, didn't emit SADE symbols.
  550.  
  551. To make a long story short, it's a great idea, but not trivial.
  552. - -- 
  553. Steve Dorner, U of Illinois Computing Services Office
  554. Internet: s-dorner@uiuc.edu  UUCP: uunet!uiucuxc!uiuc.edu!s-dorner
  555.  
  556. +++++++++++++++++++++++++++
  557.  
  558. From: neeri@iis.ethz.ch (Matthias Neeracher)
  559. Organization: Integrated Systems Laboratory, ETH, Zurich
  560. Date: Wed, 3 Jun 1992 17:27:55 GMT
  561.  
  562. In article <35599@unix.SRI.COM> mxmora@unix.SRI.COM (Matt Mora) writes:
  563. >With all this talk about toolserver and the like, how
  564. >come no one has come up with a way for me to tell the unix
  565. >box to compile some source and let the mac link its output?
  566. >[...]
  567. >Is something like this possible?
  568.  
  569. Possible, yes :-) But I don't think many people do it. Isn't Microsoft supposed
  570. to do all their development on Unix boxes ?
  571.  
  572. It should be possible to retrofit the mac version of gcc to run on unix again,
  573. but someone would have to write an assembler for it that generates the correct
  574. .o files (COFF2MPW, anyone ?).
  575.  
  576. Matthias
  577.  
  578. - -----
  579. Matthias Neeracher                                      neeri@iis.ethz.ch
  580.  `We say "gestalt" when things combine to act in ways we can't explain'
  581.                              -- Marvin Minsky, _The Society Of Mind_
  582.  
  583. +++++++++++++++++++++++++++
  584.  
  585. From: ericsc@microsoft.com (Eric Schlegel)
  586. Date: 5 Jun 92 15:29:38 GMT
  587. Organization: Microsoft Corporation
  588.  
  589. In article <NEERI.92Jun3182755@iis.ethz.ch> neeri@iis.ethz.ch (Matthias Neeracher) writes:
  590. >In article <35599@unix.SRI.COM> mxmora@unix.SRI.COM (Matt Mora) writes:
  591. >>With all this talk about toolserver and the like, how
  592. >>come no one has come up with a way for me to tell the unix
  593. >>box to compile some source and let the mac link its output?
  594. >>[...]
  595. >>Is something like this possible?
  596. >
  597. >Possible, yes :-) But I don't think many people do it. Isn't Microsoft supposed
  598. >to do all their development on Unix boxes ?
  599.  
  600. We did at one point, but that was years and years ago (early 80's). Nowadays
  601. I think about 10 people in the entire company still do development on Xenix;
  602. most development is on PCs or Macs.
  603.  
  604. - -eric
  605. - -------
  606. My opinion, not Microsoft's.
  607.  
  608. +++++++++++++++++++++++++++
  609.  
  610. From: urlichs@smurf.sub.org (Matthias Urlichs)
  611. Date: 23 Jun 1992 17:44:05 +0200
  612. Organization: University of Karlsruhe, FRG
  613.  
  614. In comp.sys.mac.programmer, article <NEERI.92Jun3182755@iis.ethz.ch>,
  615.   neeri@iis.ethz.ch (Matthias Neeracher) writes:
  616. < It should be possible to retrofit the mac version of gcc to run on unix again,
  617. < but someone would have to write an assembler for it that generates the correct
  618. < .o files (COFF2MPW, anyone ?).
  619. coff2mpw does exist. I wrote it a few months ago as a Perl script.  ;-)
  620.  
  621. HOWEVER, the Unix C compilers generate absolute references. MPW object files
  622. can't have absolute references for anything except data->data because (a)
  623. code->data references can't be patched (code resources are supposed tro be
  624. write-only) and (b) anything->code references can't be absolute because the
  625. code resource in question may move. Because there's no indication as to where
  626. the absolute-referencing instruction is, if any, the Linker can't do anything
  627. about this problem either.
  628. As a result, if you want to use the resulting code, you'll have to load it
  629. into global data space (which isn't relocatible), let the _DataInit() patch
  630. up the absolute references for you, and essentially jump into your data space.
  631.  
  632. It works. But it's ugly. And we haven't even talked about the fact that
  633. there's no such thing as an A5 world under Unix. This means that a Unix
  634. compiler is free to clobber the A5 register as long as it restores it on
  635. procedure exit. This means that if your Unix code calls your Mac code in
  636. any way at all, you'll have no A5 register and will sooner or later crash
  637. your system unless you're _very_ careful.
  638.  
  639. The resulting object files are very useful for being fed into DumpObj,
  640. however. (I hate Unix assembler syntax.)
  641. My code should be FTPable from iraun1.ira.uka.de, directory /pub/mac.
  642.  
  643. - -- 
  644. "I can give you a sentence with the word punctilious.  There's
  645.  a farmer with two daughters, Lizzie and Tillie.  Lizzie is 
  646.  all right, but you have no idea how punctilious."
  647. - -- Another member of the Algonquin Round Table
  648. - -- 
  649. Matthias Urlichs  --  urlichs@smurf.sub.org -- urlichs@smurf.ira.uka.de   /(o\
  650. Humboldtstrasse 7 -- 7500 Karlsruhe 1 -- Germany  --  +49-721-9612521     \o)/
  651.  
  652. ---------------------------
  653.  
  654. From: ulbrich@second_next.informatik.uni-ulm.de (Jan Ulbrich)
  655. Subject: OCE Finder and Macintosh PC Exchange
  656. Organization: University of Ulm, Germany
  657. Date: Thu, 4 Jun 92 09:26:14 GMT
  658.  
  659. Hi there,
  660.  
  661. I'm working on an extern filesystem for the Macintosh, but noone can  
  662. tell
  663. me how to implement one. The developer-support can't help - though it  
  664. is
  665. mentioned in Inside Macintosh IV to ask them for support. Any idea  
  666. where to
  667. get information from? Please...
  668.  
  669. I read that the "Macintosh PC Exchange" can be extended by modules.  
  670. Would
  671. this be a possibility to attach an extern filesystem? Where can I get
  672. Information about this?
  673.  
  674. MacUP writes that the new O.C.E-Finder will be shiped this fall. Has  
  675. anyone
  676. informations on how to extend the O.C.E.-mailing engine?
  677.  
  678. Thanks for reply and have a nice day, Jan
  679.  
  680. ///  Jan Ulbrich -- flynn (remember tron?)
  681. o-o  student at University of Ulm, Germany
  682.  L
  683.  _   address: ulbrich@julia.informatik.uni-ulm.de
  684.  
  685.  
  686. - -- NewsGrazer, a NeXTstep(tm) news reader, posting --
  687. M>UQR=&8P7&%N<VE[7&9O;G1T8FQ<9C!<9FUO9&5R;B!#;W5R:65R.WT*7&UA
  688. M<F=L,3(P"EQM87)G<C$R,`I<<&%R9%QT>#DV,%QT>#$Y,C!<='@R.#@P7'1X
  689. M,S@T,%QT>#0X,#!<='@U-S8P7'1X-C<R,%QT>#<V.#!<='@X-C0P7'1X.38P
  690. M,%QF,%QB,%QI,%QU;#!<9G,R-"!(:2!T:&5R92Q<"EP*22=M('=O<FMI;F<@
  691. M;VX@86X@97AT97)N(&9I;&5S>7-T96T@9F]R('1H92!-86-I;G1O<V@L(&)U
  692. M="!N;V]N92!C86X@=&5L;%P*;64@:&]W('1O(&EM<&QE;65N="!O;F4N(%1H
  693. M92!D979E;&]P97(M<W5P<&]R="!C86XG="!H96QP("T@=&AO=6=H(&ET(&ES
  694. M7`IM96YT:6]N960@:6X@26YS:61E($UA8VEN=&]S:"!)5B!T;R!A<VL@=&AE
  695. M;2!F;W(@<W5P<&]R="X@06YY(&ED96$@=VAE<F4@=&]<"F=E="!I;F9O<FUA
  696. M=&EO;B!F<F]M/R!0;&5A<V4N+BY<"EP*22!R96%D('1H870@=&AE(")-86-I
  697. M;G1O<V@@4$,@17AC:&%N9V4B(&-A;B!B92!E>'1E;F1E9"!B>2!M;V1U;&5S
  698. M+B!7;W5L9%P*=&AI<R!B92!A('!O<W-I8FEL:71Y('1O(&%T=&%C:"!A;B!E
  699. M>'1E<FX@9FEL97-Y<W1E;3\@5VAE<F4@8V%N($D@9V5T7`I);F9O<FUA=&EO
  700. M;B!A8F]U="!T:&ES/UP*7`I-86-54"!W<FET97,@=&AA="!T:&4@;F5W($\N
  701. M0RY%+49I;F1E<B!W:6QL(&)E('-H:7!E9"!T:&ES(&9A;&PN($AA<R!A;GEO
  702. M;F5<"FEN9F]R;6%T:6]N<R!O;B!H;W<@=&\@97AT96YD('1H92!/+D,N12XM
  703. M;6%I;&EN9R!E;F=I;F4_7`I<"@I4:&%N:W,@9F]R(')E<&QY(&%N9"!H879E
  704. M(&$@;FEC92!D87DL($IA;EP*7`HO+R\@($IA;B!5;&)R:6-H("TM(&9L>6YN
  705. M("AR96UE;6)E<B!T<F]N/RE<"F\M;R`@<W1U9&5N="!A="!5;FEV97)S:71Y
  706. M(&]F(%5L;2P@1V5R;6%N>5P*($Q<"B!?("`@861D<F5S<SH@=6QB<FEC:$!J
  707. ?=6QI82YI;F9O<FUA=&EK+G5N:2UU;&TN9&5<"@I]"F5S
  708. `
  709.  
  710. +++++++++++++++++++++++++++
  711.  
  712. From: absurd@applelink.apple.com (Tim Dierks, software saboteur)
  713. Date: 4 Jun 92 18:34:11 GMT
  714. Organization: MacDTS Misfits
  715.  
  716. In article <1992Jun4.092614.21300@informatik.uni-ulm.de>, ulbrich@second_next.informatik.uni-ulm.de (Jan Ulbrich) writes:
  717. > Hi there,
  718. > I'm working on an extern filesystem for the Macintosh, but noone can  
  719. > tell
  720. > me how to implement one. The developer-support can't help - though it  
  721. > is
  722. > mentioned in Inside Macintosh IV to ask them for support. Any idea  
  723. > where to
  724. > get information from? Please...
  725. > I read that the "Macintosh PC Exchange" can be extended by modules.  
  726. > Would
  727. > this be a possibility to attach an extern filesystem? Where can I get
  728. > Information about this?
  729. > MacUP writes that the new O.C.E-Finder will be shiped this fall. Has  
  730. > anyone
  731. > informations on how to extend the O.C.E.-mailing engine?
  732.  
  733.     There is little to no support for external file systems at the
  734. moment.  Howver, one can be written- they're used for the ISO 9660,
  735. High Sierra, and Audio CD formats on Apple CD-ROM drives.  However,
  736. here are my warnings: They can only be made to work on read-only
  737. systems.  It is our estimate that it will take a really expert
  738. Mac programmer 2 years to write one.  This programmer will spend
  739. 75% of her time bashine her head against the ugliest bits of the
  740. Mac.  If it sounds like I'm trying to scare you, I am.  This is not
  741. a project to be attempted lightly.
  742.  
  743. Tim Dierks
  744. MacDTS, but I speak for the trees
  745.  
  746. +++++++++++++++++++++++++++
  747.  
  748. From: urlichs@smurf.sub.org (Matthias Urlichs)
  749. Date: 23 Jun 92 18:17:40 GMT
  750. Organization: University of Karlsruhe, FRG
  751.  
  752. In comp.sys.mac.programmer, article <26237@goofy.Apple.COM>,
  753.   absurd@applelink.apple.com (Tim Dierks, software saboteur) writes:
  754. < In article <1992Jun4.092614.21300@informatik.uni-ulm.de>, ulbrich@second_next.informatik.uni-ulm.de (Jan Ulbrich) writes:
  755. < > 
  756. < > Hi there,
  757. < > 
  758. < > I'm working on an extern filesystem for the Macintosh, but noone can  tell
  759. < > me how to implement one. The developer-support can't help - though it is
  760. < > mentioned in Inside Macintosh IV to ask them for support. Any idea where to
  761. < > get information from? Please...
  762. <     There is little to no support for external file systems at the
  763. < moment.  Howver, one can be written- they're used for the ISO 9660,
  764. < High Sierra, and Audio CD formats on Apple CD-ROM drives.  However,
  765. < here are my warnings: They can only be made to work on read-only
  766. < systems.  It is our estimate that it will take a really expert
  767. < Mac programmer 2 years to write one.  This programmer will spend
  768. < 75% of her time bashine her head against the ugliest bits of the
  769. < Mac.  If it sounds like I'm trying to scare you, I am.  This is not
  770. < a project to be attempted lightly.
  771.  
  772. But what are AppleShare or MacNFS, if not external file systems?
  773. And these certainly aren't write-only.  ;-)
  774.  
  775. BTW, this is a good alternate way to write an external file system -- just
  776. emulate an AppleShare file server and plug your external file system support
  777. code into its back end. Source code to do this is available via FTP from
  778. iraun1.ira.uka.de, directory /pub/mac.
  779.  
  780. - -- 
  781. Boob's Law:
  782.         You always find something in the last place you look.
  783. - -- 
  784. Matthias Urlichs  --  urlichs@smurf.sub.org -- urlichs@smurf.ira.uka.de   /(o\
  785. Humboldtstrasse 7 -- 7500 Karlsruhe 1 -- Germany  --  +49-721-9612521     \o)/
  786.  
  787. ---------------------------
  788.  
  789. From: kpmiller@uokmax.ecn.uoknor.edu (Kent P Miller)
  790. Subject: Drawing a "graph" of a sound
  791. Organization: Engineering Computer Network, University of Oklahoma, Norman, OK, USA
  792. Date: Fri, 5 Jun 1992 16:59:47 GMT
  793.  
  794. I am trying to write a procedure that will draw a graphical representation
  795. of a sound sort of like Sound Edit or the HyperCard sound stuff.  Here's the
  796. problem:
  797.  
  798. If I make a picture using every single point in the sound, it is too slow.
  799. If I just skip through the sound (with every 10th point or so), I might not
  800. get a true representation of the sound.  My idea is to only
  801. check every point and just graph the max/min of every 20th point or so.
  802.  
  803. Has anyone done this and if so, how did you do it?
  804.  
  805. Thanks for any help you can offer.  If I am emailed, I will summarize.
  806.  
  807. Kent
  808. - -- 
  809. - -----------------------
  810. Kent Miller
  811. kpmiller@uokmax.ecn.uoknor.edu
  812. - -----------------------
  813.  
  814. +++++++++++++++++++++++++++
  815.  
  816. From: REEKES@applelink.apple.com (Jim Reekes)
  817. Date: 9 Jun 92 06:53:49 GMT
  818. Organization: Apple Computer, Inc.
  819.  
  820. In article <1992Jun5.165947.24566@constellation.ecn.uoknor.edu>, kpmiller@uokmax.ecn.uoknor.edu (Kent P Miller) writes:
  821. > I am trying to write a procedure that will draw a graphical representation
  822. > of a sound sort of like Sound Edit or the HyperCard sound stuff.  Here's the
  823. > problem:
  824. > If I make a picture using every single point in the sound, it is too slow.
  825. > If I just skip through the sound (with every 10th point or so), I might not
  826. > get a true representation of the sound.  My idea is to only
  827. > check every point and just graph the max/min of every 20th point or so.
  828. > Has anyone done this and if so, how did you do it?
  829. > Thanks for any help you can offer.  If I am emailed, I will summarize.
  830.  
  831. First, you have to decide what the scaling factor is.  There are two
  832. variables: the length of the data and the length of the picture.
  833.  
  834. You divide the data length by the picture's length.
  835. This gives you the increment factor.
  836. Draw the first sample of the data at picture's position zero.
  837. Add increment to the index, and get the next sample from the array.
  838. Do this until the length of the picture.
  839.  
  840. You also have to scale the amplitudes to the picture's height.
  841.  
  842. Remember that $80 is the zero crossing, meaning that $80 is silence.
  843. The maximum value is $FF and the minumum is $00.
  844.  
  845.  
  846.  
  847. - -----------------------------------------------------------------------
  848. Jim Reekes, Polterzeitgeist  |     Macintosh Toolbox Engineering
  849.                              |          Sound Manager Expert
  850. Apple Computer, Inc.         | "All opinions expressed are mine, and do
  851. 20525 Mariani Ave. MS: 81-KS |   not necessarily represent those of my
  852. Cupertino, CA 95014          |       employer, Apple Computer Inc."
  853.  
  854. +++++++++++++++++++++++++++
  855.  
  856. From: rla20@duts.ccc.amdahl.com (Roger Allen)
  857. Date: 11 Jun 92 20:55:57 GMT
  858. Organization: Amdahl Corporation, Sunnyvale CA
  859.  
  860. In article <26538@goofy.Apple.COM> REEKES@applelink.apple.com (Jim Reekes) writes:
  861. >In article <1992Jun5.165947.24566@constellation.ecn.uoknor.edu>, kpmiller@uokmax.ecn.uoknor.edu (Kent P Miller) writes:
  862. >> 
  863. >> I am trying to write a procedure that will draw a graphical representation
  864. >> of a sound sort of like Sound Edit or the HyperCard sound stuff.  Here's the
  865. >> problem:
  866. >> 
  867. >> If I make a picture using every single point in the sound, it is too slow.
  868. >> If I just skip through the sound (with every 10th point or so), I might not
  869. >> get a true representation of the sound.  My idea is to only
  870. >> check every point and just graph the max/min of every 20th point or so.
  871. >> 
  872. >> Has anyone done this and if so, how did you do it?
  873. >> 
  874. >> Thanks for any help you can offer.  If I am emailed, I will summarize.
  875. >
  876. >First, you have to decide what the scaling factor is.  There are two
  877. >variables: the length of the data and the length of the picture.
  878. >
  879. >You divide the data length by the picture's length.
  880. >This gives you the increment factor.
  881. >Draw the first sample of the data at picture's position zero.
  882. >Add increment to the index, and get the next sample from the array.
  883. >Do this until the length of the picture.
  884. >
  885. >You also have to scale the amplitudes to the picture's height.
  886. >
  887. >Remember that $80 is the zero crossing, meaning that $80 is silence.
  888. >The maximum value is $FF and the minumum is $00.
  889. >
  890.  
  891. Another thing to keep in mind is, how much is the user going to be looking
  892. at?  If the user is only going to be looking at 200 points of a 20k
  893. sound, then only draw those 200 points at a time.
  894.  
  895. I have been working on a program that does this and had similar problems.
  896. What I USED to do was:
  897.  
  898. 1. Draw the ENTIRE sound to an offscreen buffer (or a scaled sound if
  899.    length > 32k).
  900. 2. Copybits the part that the user was looking at to the screen.
  901.  
  902. But, number 1 takes a LONG time for long sounds and for me this was
  903. unacceptable.
  904.  
  905. So, what I changed to was:
  906.  
  907. 1. Convert the sound data points to y coordinates and store. (i.e. FF -> 0
  908.    and 0 -> maxY)  This doesn't take too long, but occupies space.
  909. 2. Then, draw what the user is looking at into an offscreen buffer that is
  910.    the size of the window, then copybits this to the window.  If you just
  911.    draw directly to the window, the user can see this.
  912.  
  913. However, my way is still not the fastest since SoundEdit is lots faster.
  914.  
  915. I asked this before and I'll ask again...How does SoundEdit do it???
  916.  
  917. Hope this helps,
  918. Roger
  919. - --
  920. > Roger Allen                   |  All the opinions expressed are my     <
  921. > Amdahl Computer Development   |  own and are not Amdahl's.             <
  922. > rla20@cd.amdahl.com           |  ------They paid me to say that------- <
  923.  
  924. +++++++++++++++++++++++++++
  925.  
  926. From: ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University)
  927. Date: 12 Jun 92 18:24:42 +1200
  928. Organization: University of Waikato, Hamilton, New Zealand
  929.  
  930. In article <05sJ020e16iO01@JUTS.ccc.amdahl.com>, rla20@duts.ccc.amdahl.com (Roger Allen) writes:
  931. >
  932. > I have been working on a program that does this and had similar problems.
  933. > What I USED to do was:
  934. >
  935. > 1. Draw the ENTIRE sound to an offscreen buffer (or a scaled sound if
  936. >    length > 32k).
  937. > 2. Copybits the part that the user was looking at to the screen.
  938. >
  939. > But, number 1 takes a LONG time for long sounds and for me this was
  940. > unacceptable.
  941. >
  942. > So, what I changed to was:
  943. >
  944. > 1. Convert the sound data points to y coordinates and store. (i.e. FF -> 0
  945. >    and 0 -> maxY)  This doesn't take too long, but occupies space.
  946. > 2. Then, draw what the user is looking at into an offscreen buffer that is
  947. >    the size of the window, then copybits this to the window.  If you just
  948. >    draw directly to the window, the user can see this.
  949. >
  950. > However, my way is still not the fastest since SoundEdit is lots faster.
  951. >
  952. > I asked this before and I'll ask again...How does SoundEdit do it???
  953.  
  954. Here's an idea: create an offscreen bitmap, but don't use QuickDraw to
  955. draw the samples into it. Instead, directly compute which bits to set, and
  956. set them yourself with some carefully-written custom code. Then use CopyBits
  957. to draw the result to the screen display.
  958.  
  959. This should speed things up a bit, without getting into complications of
  960. different screen depths and screen addressability (and clip regions), which
  961. you would get into if you started directly setting screen pixels...
  962.  
  963. Lawrence D'Oliveiro                       fone: +64-7-856-2889
  964. Computer Services Dept                     fax: +64-7-838-4066
  965. University of Waikato            electric mail: ldo@waikato.ac.nz
  966. Hamilton, New Zealand    37^ 47' 26" S, 175^ 19' 7" E, GMT+12:00
  967. Calamity theory claims that there are only seven different kinds of misfortunes
  968. that you can suffer. These can be distinguished by the different patterns of
  969. cracks left when your body hits the pavement.
  970.  
  971. +++++++++++++++++++++++++++
  972.  
  973. From: oster@well.sf.ca.us (David Phillip Oster)
  974. Organization: Whole Earth 'Lectronic Link
  975. Date: Sat, 13 Jun 1992 04:38:56 GMT
  976.  
  977. Actually, the technique of using custom code to draw to an offscreen bitmap,
  978. then CopyBits()ing it to the screen is completely general and fast, since
  979. CopyBits allows any kind of scren to be the destination. I've used this
  980. techgnique to implement oscilliscopes that drew on 24-bit deep displays,
  981. and gotten many complete screen-fulls per second out of it, provided you
  982. also keep track of the min and max x, and y coordinates that you need to
  983. CopyBits() so you send the smallest rectangle you can.  Here's a tip:
  984. rather than using an offscreen bitmap, use an offscreen 1-bit deep grafport.
  985. This lets you set the foreground and background color. When you CopyBits
  986. to a color screen, CopyBits will look at those colores, and draw your 1-bit
  987. deep bitmap appropriately.  You don't get a big choiuce of colors, but sometimes
  988. it is better than boring old black and white.  There is a tech note on this
  989. kind of "Colorization" you can check in case I've gotten it wrong and it is
  990. the destinatins's foreground and background colors you should set.
  991.  
  992. +++++++++++++++++++++++++++
  993.  
  994. From: REEKES@applelink.apple.com (Jim Reekes)
  995. Date: 22 Jun 92 20:37:14 GMT
  996. Organization: Apple Computer, Inc.
  997.  
  998. In article <05sJ020e16iO01@JUTS.ccc.amdahl.com>, rla20@duts.ccc.amdahl.com (Roger Allen) writes:
  999. > Another thing to keep in mind is, how much is the user going to be looking
  1000. > at?  If the user is only going to be looking at 200 points of a 20k
  1001. > sound, then only draw those 200 points at a time.
  1002. > I have been working on a program that does this and had similar problems.
  1003. > What I USED to do was:
  1004. > 1. Draw the ENTIRE sound to an offscreen buffer (or a scaled sound if
  1005. >    length > 32k).
  1006. > 2. Copybits the part that the user was looking at to the screen.
  1007. > But, number 1 takes a LONG time for long sounds and for me this was
  1008. > unacceptable.
  1009. > So, what I changed to was:
  1010. > 1. Convert the sound data points to y coordinates and store. (i.e. FF -> 0
  1011. >    and 0 -> maxY)  This doesn't take too long, but occupies space.
  1012. > 2. Then, draw what the user is looking at into an offscreen buffer that is
  1013. >    the size of the window, then copybits this to the window.  If you just
  1014. >    draw directly to the window, the user can see this.
  1015. > However, my way is still not the fastest since SoundEdit is lots faster.
  1016. > I asked this before and I'll ask again...How does SoundEdit do it???
  1017.  
  1018.  
  1019.  
  1020. Below is a routine I used a few years ago in a MacApp application that I was
  1021. writing that could display a sound buffer.  I found that this routine was
  1022. fast enough, and I didn't need any offscreen buffers.  Upon looking at it
  1023. now, I can see some optimazations I can make but as I said when I used this
  1024. code I felt it was fast enough.
  1025.  
  1026. Hopefully the code is obvious enough.  I should point out that I draw a
  1027. gray area at the end of the sound, to show the use an area after the sound.
  1028. The length of this empty space is the constant kGrayArea.  Also note that it
  1029. only draws the exact number of sound bytes necessary to fill the display
  1030. and no more.  In other words, if you're view is 300 pixels in width this
  1031. routine will only draw 300 different bytes of the sound.
  1032.  
  1033.  
  1034. PROCEDURE TSampleDataView.Draw(area: Rect); OVERRIDE;
  1035.  
  1036. VAR
  1037.    byteWanted, offset, dataLength:  LONGINT;
  1038.    sampleArrayPtr:                  sampleAreaArrayPtr;
  1039.    areaVRect:                       VRect;
  1040.    hPos:                            Integer;
  1041.    endRect:                         Rect;
  1042.    dataPtr:                         Ptr;
  1043.    ourDialogView:                   TSampleSndEditor;
  1044.  
  1045. BEGIN
  1046.    PenNormal;
  1047.    dataPtr:= StripAddress(fSndResource.ReturnHandle^);
  1048.    dataPtr:= Ptr(ORD4(dataPtr) + fSndResource.GetSoundDataOffset);
  1049.    sampleArrayPtr:= sampleAreaArrayPtr(ORD4(dataPtr) + 22); { point to sample area }
  1050.    dataLength:=fSndResource.GetBufferLength;
  1051.    offset:= (dataLength - 1) DIV (fSize.h - kGrayArea);  { length is zero based }
  1052.    QDToViewRect(area, areaVRect);         { get the current area in relative to view }
  1053.    byteWanted:= areaVRect.left * offset;  { sample byte is positioned relative to view.h }
  1054.    hPos:= area.left;
  1055.  
  1056.    { we want to make the line contiguous, so get the previous byte }
  1057.    { if the first byte wanted is less than first position in view...}
  1058.    IF byteWanted < offset THEN                        
  1059.       MoveTo(hPos, (255 - sampleArrayPtr^[0]) DIV 2)  { then get the first byte of sample }
  1060.    ELSE                                               { otherwise, get the previous byte }
  1061.       MoveTo(hPos - 1, (255 - (sampleArrayPtr^[byteWanted - offset])) DIV 2);
  1062.       
  1063.    WHILE (hPos <= area.right) & (byteWanted <= dataLength - 1) DO
  1064.       BEGIN
  1065.          LineTo(hPos, (255 - (sampleArrayPtr^[byteWanted])) DIV 2);
  1066.          byteWanted:= byteWanted + offset;         { skip to the next byte in sample array }
  1067.          hPos:= hPos + 1;                          { goto the next horz position }
  1068.       END;
  1069.       
  1070.    { create a rect that is the ending gray area }
  1071.    areaVRect.top:= 0;                              
  1072.    areaVRect.left:= fSize.h - kGrayArea;
  1073.    areaVRect.bottom:= fSize.v;
  1074.    areaVRect.right:= fSize.h;
  1075.    ViewToQDRect(areaVRect, endRect);
  1076.    
  1077.    { if the ending gray area is not within view, then don't bother }
  1078.    IF endRect.left < area.right THEN               
  1079.       BEGIN
  1080.          MoveTo(endRect.left, endRect.top);
  1081.          LineTo(endRect.left, endRect.bottom);
  1082.          { bump the gray rect to the left one, keeping the line just drawn }
  1083.          OffSetRect(endRect, 1, 0);
  1084.          FillRect(endRect, gray);   { this will move memory! }
  1085.       END;
  1086.  
  1087.    ourDialogView:= TSampleSndEditor(GetDialogView);
  1088.    FailNIL(ourDialogView);
  1089.    IF ourDialogView.WantsLoopArea THEN
  1090.       ShowLoopArea;
  1091. END;
  1092.  
  1093.  
  1094.  
  1095. - -----------------------------------------------------------------------
  1096. Jim Reekes, Polterzeitgeist  |     Macintosh Toolbox Engineering
  1097.                              |          Sound Manager Expert
  1098. Apple Computer, Inc.         | "All opinions expressed are mine, and do
  1099. 20525 Mariani Ave. MS: 81-KS |   not necessarily represent those of my
  1100. Cupertino, CA 95014          |       employer, Apple Computer Inc."
  1101.  
  1102. +++++++++++++++++++++++++++
  1103.  
  1104. From: REEKES@applelink.apple.com (Jim Reekes)
  1105. Date: 22 Jun 92 00:34:42 GMT
  1106. Organization: Apple Computer, Inc.
  1107.  
  1108. In article <1992Jun13.043856.10362@well.sf.ca.us>, oster@well.sf.ca.us (David Phillip Oster) writes:
  1109. > Actually, the technique of using custom code to draw to an offscreen bitmap,
  1110. > then CopyBits()ing it to the screen is completely general and fast, since
  1111. > CopyBits allows any kind of scren to be the destination. I've used this
  1112. > techgnique to implement oscilliscopes that drew on 24-bit deep displays,
  1113. > and gotten many complete screen-fulls per second out of it, provided you
  1114. > also keep track of the min and max x, and y coordinates that you need to
  1115. > CopyBits() so you send the smallest rectangle you can.  Here's a tip:
  1116. > rather than using an offscreen bitmap, use an offscreen 1-bit deep grafport.
  1117. > This lets you set the foreground and background color. When you CopyBits
  1118. > to a color screen, CopyBits will look at those colores, and draw your 1-bit
  1119. > deep bitmap appropriately.  You don't get a big choiuce of colors, but sometimes
  1120. > it is better than boring old black and white.  There is a tech note on this
  1121. > kind of "Colorization" you can check in case I've gotten it wrong and it is
  1122. > the destinatins's foreground and background colors you should set.
  1123.  
  1124. Below is a routine I used a few years ago in a MacApp application that I was
  1125. writing that could display a sound buffer.  I found that this routine was
  1126. fast enough, and I didn't need any offscreen buffers.  Upon looking at it
  1127. now, I can see some optimazations I can make but as I said when I used this
  1128. code I felt it was fast enough.
  1129.  
  1130. Hopefully the code is obvious enough.  I should point out that I draw a
  1131. gray area at the end of the sound, to show the use an area after the sound.
  1132. The length of this empty space is the constant kGrayArea.  Also note that it
  1133. only draws the exact number of sound bytes necessary to fill the display
  1134. and no more.  In other words, if you're view is 300 pixels in width this
  1135. routine will only draw 300 different bytes of the sound.
  1136.  
  1137.  
  1138. PROCEDURE TSampleDataView.Draw(area: Rect); OVERRIDE;
  1139.  
  1140. VAR
  1141.    byteWanted, offset, dataLength:  LONGINT;
  1142.    sampleArrayPtr:                  sampleAreaArrayPtr;
  1143.    areaVRect:                       VRect;
  1144.    hPos:                            Integer;
  1145.    endRect:                         Rect;
  1146.    dataPtr:                         Ptr;
  1147.    ourDialogView:                   TSampleSndEditor;
  1148.  
  1149. BEGIN
  1150.    PenNormal;
  1151.    dataPtr:= StripAddress(fSndResource.ReturnHandle^);
  1152.    dataPtr:= Ptr(ORD4(dataPtr) + fSndResource.GetSoundDataOffset);
  1153.    sampleArrayPtr:= sampleAreaArrayPtr(ORD4(dataPtr) + 22); { point to sample area }
  1154.    dataLength:=fSndResource.GetBufferLength;
  1155.    offset:= (dataLength - 1) DIV (fSize.h - kGrayArea);  { length is zero based }
  1156.    QDToViewRect(area, areaVRect);         { get the current area in relative to view }
  1157.    byteWanted:= areaVRect.left * offset;  { sample byte is positioned relative to view.h }
  1158.    hPos:= area.left;
  1159.  
  1160.    { we want to make the line contiguous, so get the previous byte }
  1161.    { if the first byte wanted is less than first position in view...}
  1162.    IF byteWanted < offset THEN                        
  1163.       MoveTo(hPos, (255 - sampleArrayPtr^[0]) DIV 2)  { then get the first byte of sample }
  1164.    ELSE                                               { otherwise, get the previous byte }
  1165.       MoveTo(hPos - 1, (255 - (sampleArrayPtr^[byteWanted - offset])) DIV 2);
  1166.       
  1167.    WHILE (hPos <= area.right) & (byteWanted <= dataLength - 1) DO
  1168.       BEGIN
  1169.          LineTo(hPos, (255 - (sampleArrayPtr^[byteWanted])) DIV 2);
  1170.          byteWanted:= byteWanted + offset;         { skip to the next byte in sample array }
  1171.          hPos:= hPos + 1;                          { goto the next horz position }
  1172.       END;
  1173.       
  1174.    { create a rect that is the ending gray area }
  1175.    areaVRect.top:= 0;                              
  1176.    areaVRect.left:= fSize.h - kGrayArea;
  1177.    areaVRect.bottom:= fSize.v;
  1178.    areaVRect.right:= fSize.h;
  1179.    ViewToQDRect(areaVRect, endRect);
  1180.    
  1181.    { if the ending gray area is not within view, then don't bother }
  1182.    IF endRect.left < area.right THEN               
  1183.       BEGIN
  1184.          MoveTo(endRect.left, endRect.top);
  1185.          LineTo(endRect.left, endRect.bottom);
  1186.          { bump the gray rect to the left one, keeping the line just drawn }
  1187.          OffSetRect(endRect, 1, 0);
  1188.          FillRect(endRect, gray);   { this will move memory! }
  1189.       END;
  1190.  
  1191.    ourDialogView:= TSampleSndEditor(GetDialogView);
  1192.    FailNIL(ourDialogView);
  1193.    IF ourDialogView.WantsLoopArea THEN
  1194.       ShowLoopArea;
  1195. END;
  1196.  
  1197.  
  1198.  
  1199. - -----------------------------------------------------------------------
  1200. Jim Reekes, Polterzeitgeist  |     Macintosh Toolbox Engineering
  1201.                              |          Sound Manager Expert
  1202. Apple Computer, Inc.         | "All opinions expressed are mine, and do
  1203. 20525 Mariani Ave. MS: 81-KS |   not necessarily represent those of my
  1204. Cupertino, CA 95014          |       employer, Apple Computer Inc."
  1205.  
  1206.  
  1207. ---------------------------
  1208.  
  1209. End of C.S.M.P. Digest
  1210. **********************
  1211.